/*
* Copyright (c) 2021 AtLarge Research
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
import { useRouter } from 'next/router'
import Head from 'next/head'
import React, { useRef } from 'react'
import { usePortfolio, useProject } from '../../../../data/project'
import {
Breadcrumb,
BreadcrumbItem,
Card,
CardActions,
CardBody,
CardHeader,
CardTitle,
Chip,
ChipGroup,
DescriptionList,
DescriptionListDescription,
DescriptionListGroup,
DescriptionListTerm,
Divider,
Grid,
GridItem,
PageSection,
PageSectionVariants,
Skeleton,
Tab,
TabContent,
Tabs,
TabTitleText,
Text,
TextContent,
} from '@patternfly/react-core'
import { AppPage } from '../../../../components/AppPage'
import BreadcrumbLink from '../../../../components/util/BreadcrumbLink'
import { METRIC_NAMES } from '../../../../util/available-metrics'
import NewScenario from '../../../../components/portfolios/NewScenario'
import ScenarioTable from '../../../../components/portfolios/ScenarioTable'
import PortfolioResults from '../../../../components/portfolios/results/PortfolioResults'
/**
* Page that displays the results in a portfolio.
*/
function Portfolio() {
const router = useRouter()
const { project: projectId, portfolio: portfolioId } = router.query
const { data: project } = useProject(projectId)
const { data: portfolio } = usePortfolio(portfolioId)
const overviewRef = useRef(null)
const resultsRef = useRef(null)
const breadcrumb = (
Projects
Project details
Portfolio
)
return (
{project?.name ?? 'Portfolios'} - OpenDC
Portfolio
Overview}
tabContentId="overview"
tabContentRef={overviewRef}
/>
Results}
tabContentId="results"
tabContentRef={resultsRef}
/>
Details
Name
{portfolio?.name ?? }
Scenarios
{portfolio?.scenarioIds.length ?? (
)}
Metrics
{portfolio?.targets?.enabledMetrics ? (
portfolio.targets.enabledMetrics.length > 0 ? (
{portfolio.targets.enabledMetrics.map((metric) => (
{METRIC_NAMES[metric]}
))}
) : (
'No metrics enabled'
)
) : (
)}
Repeats per Scenario
{portfolio?.targets?.repeatsPerScenario ?? (
)}
Scenarios
)
}
export default Portfolio